2023-09-09

Actor Model

Actor是演员, Model是模特儿, 那Actor Model不就是演员与模特的组合啦?

NO, NO, NO, 我们要谈的Actor Model其实是一种并发编程模型。

传统的并发编程都是针对状态变更进行防控,说白了就是多个Writer同时写一个状态,为了避免状态被破坏,我们就需要通过某种并发控制机制来协调多个Writer的同时写。悲观锁或者乐观锁都属于常用的并发控制的机制。

Actor Model走了另一条路,它把状态封装在每一个Actor内部,外部对Actor状态的变更只能通过发送消息的方式进行, 发送给Actor的消息,Actor会保存在只有自己可以内部访问的mailbox之中,之后,Actor再“不急不慢”地处理发送给自己的消息。因为每个Actor只处理自己mailbox里的消息或者说状态, 所以,也就不存在传统的并发控制了。 (当然,这是简化的说法,其实底层实现在写入的时候还是会有并发控制)

Actor Model关键特点就是Stateful,也就是有状态,并且集状态和计算于一体。

实现Actor Model有多种机制,有基于线程的,有基于虚拟线程的,有基于Continuation的,总之,越轻量的机制,Actor Model的性能也就越强悍。

Erlang的Actor, 微软的Orlean和Scala社区的Akka,都是Actor Model的经典之作。

欢迎加入「福强私学」

跨越2190个日夜,始终坚持“实践 + 原创”打造的715125字专属知识库,囊括了(但不限于)从职场、技术、管理与商业等多个板块的内容。

  • 一个ChatGPT触达不到的地方
  • 一个带你超越AI/人工智能的地方
  • 一个与你一起成长的地方

https://afoo.me/kb.html